package zhu.yu.OOP_abstract_class.接口;
/*
问题描述：
我们需要抽取一个共有方法，用来解决两个默认方法之间重复代码的问题
但是这个共有发放不应该让实现类使用，应该是私有化的

解决方案:
从java 9 开始，接口当中允许定义私有方法, 两种

1. 普通私有方法， 解决多个默认方法之间重复代码问题
格式：
private 返回值类型 方法名称(参数名称) {
    方法体
    }

2. 静态私有方法，解决多个静态方法之间重复代码问题
private static 返回值类型 方法名称() {
    方法体
    }
 */
public interface InterfacePrivate {

    public default void methodDefault() {
        System.out.println("默认方法");
    }

    public default void methodDefault2() {
        System.out.println("默认方法2");
    }

    public default void methodDefault3() {
        System.out.println("默认方法3");
        methodPrivate();
    }

    private void methodPrivate() {
        System.out.println("方法中重复类容");
        System.out.println("方法中重复类容");
        System.out.println("方法中重复类容");
        methodPrivateStatic(); // 私有调静态
        methodDefault(); // 私有调默认
    }

    private static void methodPrivateStatic() {
//        methodPrivate();  静态方法不能用私有方法，不管静态方法是public还是private
//        methodDefault3();  静态方法不能用默认方法，不管静态方法是public还是private
    }
}
